KMIdata<-read.table(file = "~/GitHub/vespa_analyses/Input/KMIdata.txt", header=TRUE, sep="\t")
# Outlier vliegsnelheid v 10m/s weglaten
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
KMIdata<-KMIdata%>% filter(ID!=195)
library(ggplot2)
library(ggpubr)
Volgende datasets zijn gecreëerd:
Voor het model: Flight time ~ Distance gebruiken we de dataset vliegtijden per individu Omdat we hiermee de theoretische regel 1min=100m kunnen verifiëren. De imkers nemen hiervoor altijd kortste meting
Voor modellen met weerparameters, gewicht, urbanisatie: Hiervoor nemen we telkens de hele dataset, omdat elke meting van deze factoren afhangt.
We gaan verder met de dataset zonder de outliers in Melle
Van temperatuur ook categorische variabele maken (aanraden van Prof.Vangestel)
KMIdata$Temperature_cat<-cut(KMIdata$Temperature, c(8,13,17,21,25,29,33))
KMIdata$Temperature_cat
## [1] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25]
## [10] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (21,25] (17,21]
## [19] (21,25] (17,21] (17,21] (17,21] (21,25] (21,25] (25,29] (25,29] <NA>
## [28] <NA> <NA> <NA> <NA> <NA> (17,21] (25,29] (21,25] (17,21]
## [37] (17,21] (25,29] (25,29] (25,29] (25,29] (25,29] (25,29] (25,29] (29,33]
## [46] (25,29] (25,29] (25,29] (21,25] (21,25] (8,13] (8,13] (8,13] (8,13]
## [55] (17,21] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (17,21] (17,21]
## [64] (17,21] (17,21] <NA> (17,21] (17,21] (17,21] (17,21] (17,21] (17,21]
## [73] (17,21] (17,21] (17,21] (17,21] (17,21] (17,21] (17,21] (17,21] (17,21]
## [82] (25,29] (25,29] (25,29] (21,25] (21,25] (13,17] (13,17] (21,25] (21,25]
## [91] (21,25] (21,25] (21,25] <NA> <NA> (17,21] (21,25] (21,25] <NA>
## [100] <NA> <NA> <NA> <NA> <NA> (13,17] (13,17] (13,17] (8,13]
## [109] (8,13] (8,13] (25,29] (25,29] (13,17] (13,17] (17,21] (13,17] (13,17]
## [118] (13,17] (13,17] (13,17] (17,21] (17,21] (13,17] (13,17] (8,13] (8,13]
## [127] (8,13] (13,17] (13,17] (17,21] (17,21] (13,17] (17,21] (17,21] <NA>
## [136] (17,21] (13,17] (13,17] (13,17] (8,13] (8,13] (13,17] (13,17] (13,17]
## [145] (17,21] (17,21] (13,17] (17,21] (13,17] (13,17] (8,13] (8,13] (13,17]
## [154] (8,13] (8,13] (8,13] (8,13] (21,25] (21,25] (21,25] (17,21] (13,17]
## [163] (13,17] (13,17] (13,17] (13,17] (13,17] (13,17] (13,17] (13,17] (13,17]
## [172] (17,21] (17,21] (17,21] (17,21] (13,17] (17,21] (13,17] (13,17] (17,21]
## [181] (13,17] (8,13] (13,17] (13,17] (13,17] (17,21] (17,21] (13,17] (13,17]
## [190] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13]
## [199] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13]
## [208] (17,21] (17,21] (17,21] (13,17] (13,17] (17,21] (17,21] (13,17] (13,17]
## [217] (17,21] (8,13] (8,13] (8,13] (13,17] (13,17] (13,17] (13,17] (13,17]
## [226] (13,17] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13]
## [235] (8,13] (8,13] (13,17] (13,17] (13,17] (13,17] (13,17] (8,13] (8,13]
## [244] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13] (8,13]
## [253] (13,17] (13,17] (17,21] (8,13] (13,17] (13,17] (17,21] (17,21]
## Levels: (8,13] (13,17] (17,21] (21,25] (25,29] (29,33]
ggplot(data=subset(KMIdata, !is.na(Temperature_cat)), aes(x=Temperature_cat)) + geom_bar(fill="lightcoral")
Significant
Normality niet ok!
Een aantal klassen significant, interpretatie?
Normality niet ok!
Poisson verdeling ook geprobeerd met glmer maar foutmelding (zie email)
library(lmerTest)
## Loading required package: lme4
## Loading required package: Matrix
##
## Attaching package: 'lmerTest'
## The following object is masked from 'package:lme4':
##
## lmer
## The following object is masked from 'package:stats':
##
## step
library(lme4)
model_temp_cont<-lmer(Flighttime_min ~ Temperature_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model_temp_cont)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Temperature_KMI + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1898.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8374 -0.2430 -0.0059 0.1753 3.8318
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 85390.122 292.216
## Residual 3.288 1.813
## Number of obs: 230, groups: Individualcode, 91
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -416.0575 30.7203 91.0285 -13.543 < 2e-16 ***
## Temperature_KMI 0.3677 0.1250 138.0950 2.942 0.00382 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## Temprtr_KMI -0.075
res<-residuals(model_temp_cont)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.83032, p-value = 3.923e-15
qqnorm(res)
qqline(res)
model_temp_cat<-lmer(Flighttime_min ~ Temperature_cat + (1|Individualcode), offset=Distance, data=KMIdata)
summary(model_temp_cat)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Temperature_cat + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1864.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.9276 -0.2865 -0.0056 0.1522 3.8469
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 86380.491 293.906
## Residual 3.094 1.759
## Number of obs: 230, groups: Individualcode, 91
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -412.7019 30.9886 89.0891 -13.318 < 2e-16 ***
## Temperature_cat(13,17] 2.8778 0.6471 135.0087 4.447 1.8e-05 ***
## Temperature_cat(17,21] 2.6153 0.9093 135.0332 2.876 0.00468 **
## Temperature_cat(21,25] 2.8244 1.5162 135.0699 1.863 0.06466 .
## Temperature_cat(25,29] 2.4914 1.6347 135.0732 1.524 0.12983
## Temperature_cat(29,33] 102.5019 295.5400 89.0012 0.347 0.72954
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) T_(13, T_(17, T_(21, T_(25,
## Tmp_(13,17] -0.014
## Tmp_(17,21] -0.020 0.469
## Tmp_(21,25] -0.019 0.282 0.600
## Tmp_(25,29] -0.018 0.261 0.556 0.734
## Tmp_(29,33] -0.105 0.001 0.002 0.002 0.002
anova(model_temp_cat, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## Temperature_cat 64.298 12.86 5 122.3 4.1557 0.001603 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res<-residuals(model_temp_cat)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.83917, p-value = 1.037e-14
qqnorm(res)
qqline(res)
Klopt dit? Kan dit ook met mixed model?
library(knitr)
library(kableExtra)
## Warning in !is.null(rmarkdown::metadata$output) && rmarkdown::metadata$output
## %in% : 'length(x) = 2 > 1' in coercion to 'logical(1)'
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library("plot3D")
x <- KMIdata$Distance
y <- KMIdata$Temperature_KMI
z <- KMIdata$Flighttime_min
fit <- lm(z ~ x + y, na.action=na.exclude)
x.pred <- seq(min(x[!is.na(x)]), max(x[!is.na(x)]), length.out = 20)
y.pred <- seq(min(y[!is.na(y)]), max(y[!is.na(y)]), length.out = 20)
xy <- expand.grid( x = x.pred, y = y.pred)
z.pred <- matrix(predict(fit, newdata = xy),
nrow = 20, ncol = 20)
fitpoints <- predict(fit)
scatter3D(x, y, z, pch = 19, cex = 0.6, colvar=FALSE, col="dodgerblue3", theta = 210, phi = 10, bty="u", col.panel ="grey93", expand =0.4, col.grid = "white", xlab = "Distance", ylab = "Temperature", zlab = "Flight time", surf = list(x = x.pred, y = y.pred, z = z.pred,
facets = TRUE, col=ramp.col(col = c("dodgerblue4", "seagreen2"), n = 100, alpha=0.8), fit = fitpoints, border="black"),main = "Flight time vs Distance + Temperature")
Met plotly
Had met deze link problemen met expand.grid https://stackoverflow.com/questions/38331198/add-regression-plane-to-3d-scatter-plot-in-plotly Dan maar grid dat van hierboven gebruikt, maar nu klopt er precies iets niet? Alle datapunten liggen boven het oppervlak.
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ tibble 3.1.8 ✔ purrr 1.0.1
## ✔ tidyr 1.2.1 ✔ stringr 1.5.0
## ✔ readr 2.1.4 ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ tidyr::expand() masks Matrix::expand()
## ✖ plotly::filter() masks dplyr::filter(), stats::filter()
## ✖ kableExtra::group_rows() masks dplyr::group_rows()
## ✖ dplyr::lag() masks stats::lag()
## ✖ tidyr::pack() masks Matrix::pack()
## ✖ tidyr::unpack() masks Matrix::unpack()
KMIdataNoNA<-KMIdata %>% filter(Flighttime_min!="NA")
KMIdataNoNA<-KMIdataNoNA %>% filter(Temperature_KMI!="NA")
fig <- plot_ly(KMIdataNoNA, x = ~Distance, y = ~Temperature_KMI, z = ~Flighttime_min, size=1)
fig <- fig %>% add_markers()
fig <- fig %>% layout(scene = list(xaxis = list(title = 'Distance'),
yaxis = list(title = 'Temperature_KMI'),
zaxis = list(title = 'Flight time (min)')))
p2 <- add_trace(p = fig,
z = z.pred,
x = seq(2100, 0, by = -100),
y = seq(0, 30, by = 10),
type = "surface")
p2
Normality niet ok!
Niet significant
model_tempdist_all<-lmer(Flighttime_min ~ Distance + Temperature_KMI + (1|NestID) + (1|NestID:BaitID) + (1|Individualcode), na.action=na.exclude, data=KMIdata)
## boundary (singular) fit: see help('isSingular')
summary(model_tempdist_all)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Distance + Temperature_KMI + (1 | NestID) +
## (1 | NestID:BaitID) + (1 | Individualcode)
## Data: KMIdata
##
## REML criterion at convergence: 1005.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.2425 -0.4262 -0.1822 0.1635 4.4765
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 0.1443 0.3799
## NestID:BaitID (Intercept) 1.8910 1.3751
## NestID (Intercept) 0.0000 0.0000
## Residual 3.2814 1.8115
## Number of obs: 230, groups: Individualcode, 91; NestID:BaitID, 68; NestID, 34
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 3.5399788 0.9074782 66.9650223 3.901 0.000225 ***
## Distance 0.0056150 0.0008062 62.3323406 6.965 2.42e-09 ***
## Temperature_KMI -0.0686672 0.0445457 91.2883267 -1.541 0.126655
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Distnc
## Distance -0.336
## Temprtr_KMI -0.903 -0.010
## optimizer (nloptwrap) convergence code: 0 (OK)
## boundary (singular) fit: see help('isSingular')
anova(model_tempdist_all, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## Distance 159.173 159.173 1 62.332 48.5081 2.415e-09 ***
## Temperature_KMI 7.797 7.797 1 91.288 2.3762 0.1267
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res<-residuals(model_tempdist_all)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.7916, p-value < 2.2e-16
qqnorm(res)
qqline(res)
ggplot(KMIdata, aes(x=Cloudcoverage_KMI, y=ForagingSpeed)) + geom_point(color="lightblue") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="darkblue") + ggtitle("All data KMI")+ theme(plot.title = element_text(hjust = 0.5, size=10))
Licht significant
Normality niet ok!
model_cloud_all<-lmer(Flighttime_min ~ Cloudcoverage_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model_cloud_all)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Cloudcoverage_KMI + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1574.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8876 -0.2653 -0.0075 0.1399 3.4796
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 79726.616 282.359
## Residual 4.034 2.009
## Number of obs: 191, groups: Individualcode, 74
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -393.232 32.826 73.019 -11.979 <2e-16 ***
## Cloudcoverage_KMI 1.296 0.965 116.030 1.343 0.182
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## Cldcvrg_KMI -0.011
anova(model_cloud_all, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## Cloudcoverage_KMI 7.2713 7.2713 1 116.03 1.8024 0.182
res<-residuals(model_cloud_all)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.82333, p-value = 5.935e-14
qqnorm(res)
qqline(res)
Telkens voor de modellen:
ForagingSpeed ~ Windspeed
ForagingSpeed ~ Windspeed²
plot19<-ggplot(KMIdata, aes(x=WindSpeed_KMI, y=ForagingSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("ForagingSpeed ~ Windspeed KMI")+ theme(plot.title = element_text(hjust = 0.5, size=10))
plot22<-ggplot(KMIdata, aes(x=WindSpeed_KMI, y=ForagingSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ I(x^2), se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("ForagingSpeed ~ Windspeed² KMI")+ theme(plot.title = element_text(hjust = 0.5, size=10))
ggarrange(plot19, plot22 + rremove("x.text"),
labels = c("A", "B"),
ncol = 2, nrow = 1)
Beide modellen significant
Normality voor beiden niet ok!
model_wind_all<-lmer(Flighttime_min ~ WindSpeed_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model_wind_all)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ WindSpeed_KMI + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1891.5
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8936 -0.2627 -0.0058 0.1435 3.4706
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 85306.430 292.073
## Residual 3.144 1.773
## Number of obs: 230, groups: Individualcode, 91
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -411.5415 30.6235 90.0651 -13.439 < 2e-16 ***
## WindSpeed_KMI 0.6332 0.1610 138.0169 3.932 0.000133 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## WindSpd_KMI -0.019
anova(model_wind_all, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## WindSpeed_KMI 48.614 48.614 1 138.02 15.464 0.0001325 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model_wind2_all<-lmer(Flighttime_min ~ I(WindSpeed_KMI^2) + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## unable to evaluate scaled gradient
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
summary(model_wind2_all)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ I(WindSpeed_KMI^2) + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1902.6
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.1142 -0.2555 -0.0059 0.1360 3.6182
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 85336.122 292.123
## Residual 3.302 1.817
## Number of obs: 230, groups: Individualcode, 91
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -410.12865 30.62483 90.01791 -13.392 < 2e-16 ***
## I(WindSpeed_KMI^2) 0.05677 0.01997 138.01433 2.844 0.00514 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## I(WS_KMI^2) -0.010
## optimizer (nloptwrap) convergence code: 0 (OK)
## unable to evaluate scaled gradient
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
anova(model_wind2_all, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## I(WindSpeed_KMI^2) 26.697 26.697 1 138.01 8.0858 0.00514 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res<-residuals(model_wind_all)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.81594, p-value = 8.702e-16
qqnorm(res)
qqline(res)
res<-residuals(model_wind2_all)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.80097, p-value < 2.2e-16
qqnorm(res)
qqline(res)
Hiervoor werd telkens voor elke meting nagegaan of de hoornaar met meewind (tailwind), tegenwind (upwind) of loodrechte wind (perpendicular) te maken had. Dit volgens de formules:
|𝜃flight −𝜃wind| ≤ 45 is tailwind
45 < |𝜃flight −𝜃wind|<135 is (quasi) perpendicular
|𝜃 flight −𝜃wind| ≥135 upwind
TO DO: Lege vakjes Wind_flight NA maken
ggplot(data=subset(KMIdata, !is.na(Wind_flight)), aes(x= Wind_flight, col=Wind_flight, y=ForagingSpeed)) + geom_boxplot()
## Warning: Removed 26 rows containing non-finite values (`stat_boxplot()`).
ggplot(data=subset(KMIdata, !is.na(Wind_flight)), aes(x= WindSpeed_KMI, col=Wind_flight, y=ForagingSpeed)) + geom_point() + facet_grid(~Wind_flight) + geom_smooth(method="lm", formula = y ~ I(x^2), se=TRUE, fullrange=FALSE, level=0.95)
## Warning: Removed 30 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 30 rows containing missing values (`geom_point()`).
windanova<-lmer(Flighttime_min ~ Wind_flight + (1|Individualcode), offset=Distance, na.action=na.exclude, data=KMIdata)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## unable to evaluate scaled gradient
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
summary(windanova)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Wind_flight + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1932.2
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8297 -0.2558 -0.0060 0.1122 4.1052
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 84703.912 291.039
## Residual 3.441 1.855
## Number of obs: 234, groups: Individualcode, 94
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -337.11 168.03 91.99 -2.006 0.0478 *
## Wind_flightperpendicular -72.48 170.78 91.99 -0.424 0.6723
## Wind_flighttailwind -71.34 170.78 92.00 -0.418 0.6771
## Wind_flightupwind -72.06 170.78 92.00 -0.422 0.6741
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Wnd_flghtpr Wnd_flghtt
## Wnd_flghtpr -0.984
## Wnd_flghttl -0.984 1.000
## Wnd_flghtpw -0.984 1.000 1.000
## optimizer (nloptwrap) convergence code: 0 (OK)
## unable to evaluate scaled gradient
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
Significant
Normality niet ok!
data_tailwind<-subset(KMIdata, Wind_flight == "tailwind")
model_tailwind<-lmer(Flighttime_min ~ WindSpeed_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=data_tailwind)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## unable to evaluate scaled gradient
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
summary(model_tailwind)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ WindSpeed_KMI + (1 | Individualcode)
## Data: data_tailwind
## Offset: Distance
##
## REML criterion at convergence: 372.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.13557 -0.15923 -0.00299 0.01975 2.13987
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 89183.261 298.64
## Residual 1.323 1.15
## Number of obs: 42, groups: Individualcode, 22
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -354.2999 63.6953 21.0337 -5.562 1.6e-05 ***
## WindSpeed_KMI 1.9695 0.5308 19.0056 3.710 0.00148 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## WindSpd_KMI -0.028
## optimizer (nloptwrap) convergence code: 0 (OK)
## unable to evaluate scaled gradient
## Model failed to converge: degenerate Hessian with 1 negative eigenvalues
anova(model_tailwind, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## WindSpeed_KMI 18.206 18.206 1 19.006 13.765 0.001484 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res<-residuals(model_tailwind)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.80132, p-value = 4.725e-06
qqnorm(res)
qqline(res)
Significant
Normality niet ok!
data_perpendicular<-subset(KMIdata, Wind_flight == "perpendicular")
model_perpendicular<-lmer(Flighttime_min ~ WindSpeed_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=data_perpendicular)
summary(model_perpendicular)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ WindSpeed_KMI + (1 | Individualcode)
## Data: data_perpendicular
## Offset: Distance
##
## REML criterion at convergence: 1086.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -1.6773 -0.3007 -0.0055 0.1599 3.8205
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 82549.958 287.315
## Residual 2.418 1.555
## Number of obs: 132, groups: Individualcode, 55
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -392.4157 38.7470 54.0285 -10.128 4.33e-14 ***
## WindSpeed_KMI 0.7233 0.1691 76.0084 4.277 5.46e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## WindSpd_KMI -0.016
anova(model_perpendicular, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## WindSpeed_KMI 44.22 44.22 1 76.008 18.289 5.456e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res<-residuals(model_perpendicular)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.84239, p-value = 1.443e-10
qqnorm(res)
qqline(res)
Niet significant
Normality niet ok!
data_upwind<-subset(KMIdata, Wind_flight == "upwind")
model_upwind<-lmer(Flighttime_min ~ WindSpeed_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=data_upwind)
summary(model_upwind)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ WindSpeed_KMI + (1 | Individualcode)
## Data: data_upwind
## Offset: Distance
##
## REML criterion at convergence: 511.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -1.9621 -0.2480 -0.0058 0.1086 2.9613
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 89543.074 299.237
## Residual 4.592 2.143
## Number of obs: 56, groups: Individualcode, 27
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -412.9125 57.6072 26.0315 -7.168 1.29e-07 ***
## WindSpeed_KMI -0.2379 0.4400 28.0061 -0.541 0.593
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## WindSpd_KMI -0.025
anova(model_upwind, ddf="Satterthwaite", type=3)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## WindSpeed_KMI 1.3425 1.3425 1 28.006 0.2924 0.593
res<-residuals(model_upwind)
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.80469, p-value = 3.644e-07
qqnorm(res)
qqline(res)
fullmodel<-lmer(Flighttime_min ~ Traject100m + WindSpeed_KMI + Temperature_KMI + Cloudcoverage_KMI + Weight_ind + Wind_flight + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(fullmodel)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Traject100m + WindSpeed_KMI + Temperature_KMI +
## Cloudcoverage_KMI + Weight_ind + Wind_flight + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 410.5
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.3917 -0.3001 -0.0556 0.2722 3.3894
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 53883.948 232.129
## Residual 3.547 1.883
## Number of obs: 71, groups: Individualcode, 16
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -550.3334 308.0425 13.0598 -1.787 0.09723 .
## Traject100m 1673.6657 550.0121 12.9981 3.043 0.00943 **
## WindSpeed_KMI -0.1017 1.6066 50.0768 -0.063 0.94978
## Temperature_KMI 0.5069 0.6809 50.0637 0.744 0.46009
## Cloudcoverage_KMI -1.2680 2.4523 50.0386 -0.517 0.60739
## Weight_ind -479.3634 861.3756 13.0048 -0.557 0.58731
## Wind_flighttailwind 0.9777 1.3264 50.0094 0.737 0.46447
## Wind_flightupwind 0.4210 1.0123 49.9981 0.416 0.67929
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Trj100 WS_KMI Tm_KMI Cl_KMI Wght_n Wnd_flghtt
## Traject100m -0.352
## WindSpd_KMI 0.050 -0.019
## Temprtr_KMI -0.052 0.017 -0.930
## Cldcvrg_KMI -0.031 0.016 -0.591 0.558
## Weight_ind -0.874 -0.105 -0.025 0.025 0.012
## Wnd_flghttl -0.003 0.006 -0.220 0.001 0.303 0.001
## Wnd_flghtpw -0.010 0.006 -0.188 0.158 0.296 0.003 0.238
model1<-lmer(Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI + Weight_ind + Wind_flight + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model1)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI +
## Weight_ind + Wind_flight + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 413.2
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.4009 -0.3049 -0.0583 0.2752 3.4189
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 53842.509 232.040
## Residual 3.479 1.865
## Number of obs: 71, groups: Individualcode, 16
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -549.3616 307.5411 13.0053 -1.786 0.09737 .
## Traject100m 1673.0213 549.7055 12.9996 3.043 0.00942 **
## Temperature_KMI 0.4667 0.2481 51.0125 1.881 0.06569 .
## Cloudcoverage_KMI -1.3589 1.9593 51.0134 -0.694 0.49111
## Weight_ind -480.7074 860.7830 12.9992 -0.558 0.58603
## Wind_flighttailwind 0.9596 1.2813 51.0107 0.749 0.45734
## Wind_flightupwind 0.4090 0.9845 51.0036 0.415 0.67961
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Trj100 Tm_KMI Cl_KMI Wght_n Wnd_flghtt
## Traject100m -0.352
## Temprtr_KMI -0.016 -0.001
## Cldcvrg_KMI -0.002 0.006 0.029
## Weight_ind -0.874 -0.106 0.006 -0.004
## Wnd_flghttl 0.008 0.002 -0.568 0.220 -0.004
## Wnd_flghtpw 0.000 0.003 -0.046 0.233 -0.002 0.206
model2<-lmer(Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI + Weight_ind + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model2)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI +
## Weight_ind + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 418
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.5700 -0.2799 -0.0505 0.2098 3.4708
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 53760.67 231.863
## Residual 3.39 1.841
## Number of obs: 71, groups: Individualcode, 16
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -551.1020 307.2951 13.0051 -1.793 0.09618 .
## Traject100m 1671.8808 549.2846 12.9996 3.044 0.00941 **
## Temperature_KMI 0.5674 0.2009 53.0059 2.825 0.00666 **
## Cloudcoverage_KMI -1.7809 1.8501 53.0103 -0.963 0.34013
## Weight_ind -477.7494 860.1200 13.0005 -0.555 0.58802
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Trj100 Tm_KMI Cl_KMI
## Traject100m -0.352
## Temprtr_KMI -0.014 0.000
## Cldcvrg_KMI -0.004 0.006 0.179
## Weight_ind -0.874 -0.106 0.004 -0.003
model3<-lmer(Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model3)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Traject100m + Temperature_KMI + Cloudcoverage_KMI +
## (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1536.6
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.5917 -0.2547 -0.0054 0.1572 3.2093
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 63054.182 251.106
## Residual 3.757 1.938
## Number of obs: 191, groups: Individualcode, 74
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -559.5955 45.6541 72.7061 -12.257 < 2e-16 ***
## Traject100m 1018.4148 225.8033 72.0127 4.510 2.46e-05 ***
## Temperature_KMI 0.4846 0.1545 115.1085 3.138 0.00216 **
## Cloudcoverage_KMI 1.0641 0.9342 115.0364 1.139 0.25704
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Trj100 Tm_KMI
## Traject100m -0.766
## Temprtr_KMI -0.070 0.012
## Cldcvrg_KMI -0.002 -0.001 -0.079
model4<-lmer(Flighttime_min ~ Traject100m + Temperature_KMI + (1|Individualcode), offset=Distance, na.action=na.omit, data=KMIdata)
summary(model4)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Flighttime_min ~ Traject100m + Temperature_KMI + (1 | Individualcode)
## Data: KMIdata
## Offset: Distance
##
## REML criterion at convergence: 1867.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8341 -0.2430 -0.0060 0.1773 3.8263
##
## Random effects:
## Groups Name Variance Std.Dev.
## Individualcode (Intercept) 70771.693 266.029
## Residual 3.288 1.813
## Number of obs: 230, groups: Individualcode, 91
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -559.5730 42.8324 89.6604 -13.064 < 2e-16 ***
## Traject100m 1009.9184 228.1899 89.0088 4.426 2.72e-05 ***
## Temperature_KMI 0.3728 0.1250 138.0877 2.983 0.00338 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) Trj100
## Traject100m -0.757
## Temprtr_KMI -0.061 0.009
library(cAIC4)
## Loading required package: stats4
## Loading required package: nlme
##
## Attaching package: 'nlme'
## The following object is masked from 'package:lme4':
##
## lmList
## The following object is masked from 'package:dplyr':
##
## collapse
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:plotly':
##
## select
## The following object is masked from 'package:dplyr':
##
## select
library(AICcmodavg)
##
## Attaching package: 'AICcmodavg'
## The following object is masked from 'package:lme4':
##
## checkConv
AIC(fullmodel)
## [1] 430.4662
AIC(model1)
## [1] 431.2467
AIC(model2)
## [1] 431.9586
AIC(model3)
## [1] 1548.611
AIC(model4)
## [1] 1877.757
library(ggcorrplot)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:purrr':
##
## some
## The following object is masked from 'package:dplyr':
##
## recode
datacor<-KMIdata[ , c("Temperature_KMI", "Cloudcoverage_KMI", "WindSpeed_KMI", "Weight_ind", "Traject100m", "NestID")]
source("~/GitHub/vespa_analyses/Input/HighstatLibV10.R")
corvif(datacor)
##
##
## Variance inflation factors
##
## GVIF
## Temperature_KMI 3.538307
## Cloudcoverage_KMI 1.333698
## WindSpeed_KMI 3.811471
## Weight_ind 2.981154
## Traject100m 1.435785
## NestID 5.380406
cormat <- round(cor(datacor, use = "pairwise.complete.obs"), 2)
ggcorrplot(cormat, lab= TRUE, type = "lower", ggtheme = ggplot2::theme_gray,
colors = c("#6D9EC1", "white", "#E46726"))